package org.convallaria.infrastruct.db.monitor;

/**
 * 数据源监控 JMX MBean 接口
 * 
 * 功能特性：
 * - 基本连接池指标监控
 * - 健康状态检查
 * - 监控状态报告
 * - 指标重置和手动触发
 * - 扩展的监控信息
 * 
 * @author gjh
 * @since 2024-09-24
 */
public interface DataSourceMonitorMBean {

    // ===== 基本连接池指标 =====

    /**
     * 获取总连接数
     */
    long getTotalConnections();

    /**
     * 获取活跃连接数
     */
    long getActiveConnections();

    /**
     * 获取空闲连接数
     */
    long getIdleConnections();

    /**
     * 获取连接池利用率（百分比）
     */
    double getConnectionUtilization();

    // ===== 健康状态相关 =====

    /**
     * 获取健康状态
     */
    boolean isHealthy();

    /**
     * 获取监控状态报告
     */
    String getStatus();

    // ===== 扩展监控信息 =====

    /**
     * 获取数据源类型
     */
    String getDataSourceTypeMBean();

    /**
     * 获取最后更新时间
     */
    String getLastUpdateTime();

    /**
     * 获取历史快照数量
     */
    int getHistorySnapshotCount();
    
    /**
     * 获取运行环境类型
     */
    String getEnvironmentType();
    
    /**
     * 获取监控器运行状态
     */
    String getMonitorStatus();
    
    /**
     * 获取线程池状态
     */
    String getThreadPoolStatus();

    // ===== 操作方法 =====

    /**
     * 重置监控指标
     */
    void resetMetrics();

    /**
     * 手动触发一次监控
     */
    void triggerMonitoring();
    
    /**
     * 强制重新初始化HikariCP MXBean
     */
    String forceReinitializeHikariMXBean();
}
